home *** CD-ROM | disk | FTP | other *** search
/ PC World 2008 September / PCWorld_2008-09_cd.bin / v cisle / sadanastroju / delicious_bookmarks-2.0.64-fx.xpi / chrome / deliciousBookmarks.jar / content / ybBookmarksManager.js < prev    next >
Encoding:
Text File  |  2008-06-19  |  5.9 KB  |  158 lines

  1. function ybStartup() {
  2.     try {
  3.            if(ybookmarksUtils.getExtensionMode() == YB_EXTENSION_MODE_CLASSIC)  {
  4.               return true;
  5.           }
  6.           var importIcon = document.getElementById("ybImport");
  7.           if(importIcon) {
  8.               importIcon.hidden = false;
  9.           }          
  10.         var bookmarksView = document.getElementById("bookmarks-view");
  11.         bookmarksView.setAttribute("class", "ybBookmarksTree");
  12.     } catch (e) {
  13.       yDebug.print("ybBookmarksManager.ybStartup(): " + e, YB_LOG_MESSAGE);
  14.     }
  15.     //Call to builtin Mozilla code.
  16.     setTimeout(Startup, 100);
  17. }
  18.  
  19.  
  20. var yb_importChecker = {
  21.  
  22. _showImportoptions: function(bookmarks) {
  23.     
  24.     var callback = {        
  25.         
  26.         _bookmarks : null,
  27.                         
  28.         onload: function(result) {
  29.             var propertyBag = result.queryElementAt(0, Components.interfaces.nsIPropertyBag);
  30.             var status = propertyBag.getProperty("status");  
  31.             var strings = document.getElementById("yb-strings"); 
  32.             if (status == "importing") {                   
  33.                 //Show MessageBox. 
  34.                    var promptService = Components.classes["@mozilla.org/embedcomp/prompt-service;1"].
  35.                        getService(Components.interfaces.nsIPromptService);
  36.                 var title = strings.getString("extensions.ybookmarks.product.name");
  37.                 var text = strings.getString("extensions.ybookmarks.import.already.running");
  38.                 promptService.alert(this, title, text);
  39.             } else {
  40.                 window.openDialog("chrome://ybookmarks/content/importBookmarks.xul", "yb-import-bookmarks", 
  41.                             "chrome,centerscreen", { bookmarks: this._bookmarks });
  42.             }
  43.         },         
  44.         onerror: function() {
  45.             yDebug.print("ybBookmarksManager.yb_importChecker.callback.onerror(): " + e, YB_LOG_MESSAGE);
  46.         }        
  47.         
  48.     };                            
  49.     var ssr = Components.classes["@yahoo.com/socialstore/delicious;1"].
  50.           getService(Components.interfaces.nsISocialStore);             
  51.     callback._bookmarks = bookmarks;
  52.     ssr.getImportStatus(callback);                                                             
  53. }
  54.  
  55. };
  56.  
  57. function yb_importBookmarks() {
  58.   try {
  59.       // check if user is logged in
  60.       if( !YBidManager.isUserLoggedIn() ) {
  61.          YBidManager.promptUserLogin();
  62.          
  63.           try {
  64.               if (window.ybLoginWindowFlag == "display") {
  65.              YBPopupWindow.showLoginWindow();
  66.           }
  67.        } catch(e) {
  68.             // do nothing
  69.            }
  70.          
  71.          return;
  72.       }    
  73.     var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].
  74.                     getService(Components.interfaces.nsIRDFService);
  75.     var rdfContainerUtils = Components.classes["@mozilla.org/rdf/container-utils;1"].
  76.                               getService(Components.interfaces.nsIRDFContainerUtils);
  77.     var bmDataSource = Components.classes["@mozilla.org/rdf/datasource;1?name=bookmarks"].
  78.                         getService(Components.interfaces.nsIRDFDataSource);
  79.     var storeService = Components.classes["@mozilla.org/ybookmarks-store-service;1"].
  80.                                             getService(Components.interfaces.nsIYBookmarksStoreService);
  81.     
  82.     const rsrcURL = rdfService.GetResource("http://home.netscape.com/NC-rdf#URL");
  83.     
  84.     var strings       = document.getElementById("yb-strings");
  85.     var bookmarksView = document.getElementById("bookmarks-view");
  86.     var tree          = bookmarksView.tree;
  87.     var builderView   = tree.builderView;
  88.     var selection     = tree.view.selection;
  89.  
  90.     var colURL        = tree.columns.getNamedColumn("URL");  
  91.     var colImported   = tree.columns.getNamedColumn("Imported");
  92.     
  93.     var start = {};
  94.     var end   = {};
  95.     var queue = []; // of resources to process
  96.     for (var i=0; i < selection.getRangeCount(); i++) {
  97.       selection.getRangeAt(i, start, end);
  98.       for (var j = start.value; j <= end.value; j++) {
  99.         var rsrc = builderView.getResourceAtIndex(j);
  100.         queue.push(rsrc);
  101.       }
  102.     }
  103.  
  104.     var bookmarks = [];
  105.     bookmarks.contains = function(item) {
  106.       for (var i=0; i < this.length; i++) {
  107.         if (this[i].rsrc == item) {
  108.           return true;
  109.         }
  110.       }
  111.       return false;
  112.     };
  113.         
  114.     while (queue.length > 0) {
  115.       var rsrc = queue.shift();
  116.       if (bookmarks.contains(rsrc)) {
  117.         continue;
  118.       }
  119.       var urlRsrc = bmDataSource.GetTarget(rsrc, rsrcURL, true);
  120.       if (urlRsrc) { // add bookmark
  121.         urlRsrc.QueryInterface(Components.interfaces.nsIRDFLiteral);
  122.         var imported = (storeService.isBookmarked(urlRsrc.Value) != null);
  123.         
  124.         bookmarks.push({ rsrc: rsrc,
  125.                          imported: imported });
  126.       
  127.       } else if (rdfContainerUtils.IsSeq(bmDataSource, rsrc)) { // add folder contents
  128.         var seq = rdfContainerUtils.MakeSeq(bmDataSource, rsrc);
  129.         var seqEnum = seq.GetElements();
  130.         while (seqEnum.hasMoreElements()) {
  131.           var elt = seqEnum.getNext();
  132.           try {
  133.             elt.QueryInterface(Components.interfaces.nsIRDFResource);
  134.             queue.push(elt);
  135.           } catch (e) { }
  136.         }
  137.       }
  138.     }
  139.     
  140.     if (bookmarks.length > 0) {
  141.        yb_importChecker._showImportoptions(bookmarks); 
  142.        /*window.openDialog("chrome://ybookmarks/content/importBookmarks.xul", "yb-import-bookmarks", 
  143.                             "chrome,centerscreen", { bookmarks: bookmarks });*/
  144.     } else {
  145.       var promptService = Components.classes["@mozilla.org/embedcomp/prompt-service;1"].
  146.              getService(Components.interfaces.nsIPromptService);
  147.       var text = strings.getString("extensions.ybookmarks.import.bookmarks.manager.instructions");
  148.       promptService.alert(this, "Delicious", text);
  149.     }
  150.       
  151.   } catch (e) {
  152.     yDebug.print("yb_importBookmarks(): " + e, YB_LOG_MESSAGE);
  153.   }
  154.   
  155. }
  156.  
  157. window.onload = ybStartup;
  158.